﻿package com.eitb.nielsen{
	import flash.net.*;
	import com.eitb.rutas.*;
	/**
	 * Realizar una llamada a nielsen. Esta clase se utiliza de la siguiente manera:
	 * new NielsenCall("GRUPO", "TITULO").doPing(); 
	 * que es igual a:
	 * new NielsenCall("GRUPO", "TITULO", NielsenCall.WEB).doPing();
	 * tambien se puede llamar a
 	 * new NielsenCall("DAIGUAL", "TITULO", NielsenCall.RSS).doPing();
	 * @author Andoni Díaz
	 * @copyright EiTB
	 */
	public class NielsenCall {
		public static const WEB:String = "es-eitb-dav";
		public static const RSS:String = "es-rsseitb";
		private static const NIELSEN_RUTA:String="http://secure-uk.imrworldwide.com/cgi-bin/m";
		private var ci:String;
		private var cg:String;
		private var tl:String;
		private var du:Number;

		public function NielsenCall(cg:String = "", tl:String = "", ci = NielsenCall.WEB):void {
			var date:Date;
			var offset:Number;

			if (NielsenCall.RSS == ci) {
				this.cg = "0";
			} else {
				this.cg=cg;
			}
			
			this.tl=tl;
			// asigna el tiemo en milisegundos siempre sin desfase horario (UTC)
			date = new Date();
			offset=date.getTimezoneOffset()*60*1000;
			date.setTime(date.getTime() + offset);
			this.du=date.getTime();
		}

		public function doPing():void {
			var request:URLRequest=new URLRequest(NIELSEN_RUTA);
			var variables:URLVariables = new URLVariables();

			variables.ci=this.ci;
			variables.cg=this.cg;
			variables.tl=this.tl;
			variables.du=this.du;
			variables.rp=Rutas.DOMINIO;
			variables.rnd=Math.random();

			//request.data = variables;
			request.data=unescape(variables.toString());// por petición de Nielsen
			this.callNielsen(request);
		}
		private function callNielsen(request:URLRequest):void {
			var loader:URLLoader=new URLLoader  ;

			//request.method=URLRequestMethod.POST;
			request.method=URLRequestMethod.GET;// por petición de Nielsen

			// comentados por problemas con nuestros miles de proxys
			//request.requestHeaders.push(new URLRequestHeader("cache-control","no-cache"));
			//request.requestHeaders.push(new URLRequestHeader("expires","Thu, 01 Dec 2000 16:00:00 GMT"));
			//request.requestHeaders.push(new URLRequestHeader("pragma","no-cache"));

			try {
				loader.load(request);
				trace('onStreamPing -- llamada a Nielsen');
			} catch (error:Error) {
				trace('onStreamPing -- FALLO llamada Nielsen');
			}
		}
	}
}